De communicatie met de database verloopt in transacties. Een transactie is een handeling die of goed of fout gaat. Vanuit de database gezien is een transactie dus atomair. Dit is in een database heel belangrijk, omdat de gegevens inconsistent zouden kunnen raken als een transactie halverwege afgebroken zou worden. Een voorbeeld hiervan in het gebruikte voorbeeld is de situatie dat een vak wordt toegevoegd aan de database. Als de actie wordt onderbroken tussen het invoeren van de vakcode en de naam van het vak ontstaat er een inconsistente database. Er is dan een instantie van VAK gecreëerd waarbij de waarde van het veld naam leeg is terwijl dat een niet toegestane situatie is in de database. Om dit te voorkomen zorgt de functie rollback ervoor dat de gehele transactie ongedaan wordt gemaakt als deze onderbroken wordt.
De functie commit hangt erg nauw samen met rollback. Het commando commit is er om de database te vertellen dat een transactie voltooid is. Deze transactie kan dan niet meer m.b.v. rollback ongedaan gemaakt worden. Niet alleen voor de gebruiker is het handig dat een transactie definitief gemaakt kan worden. Voor de database scheelt het ruimte in de rolbackspace (geheugen waarin verschillende oude situaties worden bewaard van transacties die nog ongedaan gemaakt kunnen worden). De volgende statements, waarin een insert definitief gemaakt wordt, illustreren het gebruik van commit.
INSERT INTO STUDENT VALUES (0688002, 'Piet Guillotine', 'Leffeplein 1a, Steendonck); COMMIT;
Figure 1.3: De werking van commit en
rollback.
Figuur (figuur 1.3) illustreert de werking van commit en rollback nog eens. In een serie SQL-opdrachten wordt bij punt 1 een commit gegeven, zodat de opdrachten definitief worden gemaakt en de rollbackspace wordt geleegd. Bij de rollback in punt twee worden alle SQL-opdrachten die in de rollbackspace staan ongedaan gemaakt. Dit zijn dus alle opdrachten vanaf punt 1. In punt 3 wordt de rollbackspace geleegd en merk op dat dit ook gebeurt in punt 4 als het programma wordt beeindigd.